package com.itheima.d9_interface_attention;
/*
接口其他注意事项（了解）
1、类实现多个接口或者接口继承多个接口，如果多个接口中存在相同方法，子类型要重写该方法。
2、一个类继承了父类，又同时实现了接口，父类中和接口中有相同声明的方法，实现类会使用父类方法。

 */
public class Demo {
    public static void main(String[] args) {

        Cat c = new Cat();
        c.show(); //结果：animal show! ---> 调用了父类中的方法

    }
}

interface X{
    default void test1(){
        System.out.println("我是来自X接口的方法");
    }
    void test2();
}

interface Y{
    default void test1(){
        System.out.println("我是来自Y接口的方法");
    }
    void test2();
}

interface Z extends X, Y {
    //如果多个父接口中存在相同的默认方法，子接口必定要进行重写
    //如果多个父接口中存在相同的抽象方法，子接口中也可以使用默认方法重写，也可以不动保持原来的抽象方法

    @Override
    default void test1() {
//        X.super.test1(); //保留X的test1逻辑
//        Y.super.test1(); //保留Y的test1逻辑
        System.out.println("我是来自Z接口的方法");
    }
    default void test2(){
        //重写了父类型中的抽象方法
    }
}

class Animal{
    public void show() {
        System.out.println("animal show!");
    }
}

interface Show{
    default void show() {
        System.out.println("show show!");
    }
}

//如果一个类要同时继承一个父类实现一个接口，则继承要写在实现的前面
class Cat extends Animal implements Show {

}
